在上一篇討論了封包,這篇要學物件導向中的關鍵:建構子。
是一種特殊的方法(Method),會在使用 new 建立物件的當下自動被執行。
主要用途:用來初始化物件的屬性資料。
名稱必須與類別(Class)名稱完全一模一樣。
沒有回傳值型態(連 void 都不能寫)。
可以有參數,也可以沒有參數。
class Person {
String name;
// 建構子:名稱與類別完全相同,沒有回傳值型態
Person(String inputName) {
name = inputName; // 在建立物件時就把名字設定好
System.out.println("建構子被執行了!姓名為:" + name);
}
}
public class Main {
public static void main(String[] args) {
// 使用 new 的同時傳入參數,自動觸發建構子
Person p1 = new Person("小明"); // 印出:建構子被執行了!姓名為:小明
Person p2 = new Person("小紅"); // 印出:建構子被執行了!姓名為:小紅
}
}
如果你在類別中完全沒有寫任何建構子,Java 會自動幫你產生一個沒有參數的隱藏預設建構子:類別名() {}。
但如果你已經手動寫了有參數的建構子,Java 就不會再自動提供預設建構子囉!
範例:
//用建構子設計一個「玩家角色 (Player)」類別,在建立角色時直接設定血量 (HP) 與攻擊力 (ATK):
class Player {
int hp;
int atk;
// 自訂建構子
Player(int startHp, int startAtk) {
hp = startHp;
atk = startAtk;
}
void showStatus() {
System.out.println("血量:" + hp + " | 攻擊力:" + atk);
}
}
public class GameTest {
public static void main(String[] args) {
// 在建立玩家物件的當下直接給定初期數值
Player p1 = new Player(100, 15);
p1.showStatus(); // 印出:血量:100 | 攻擊力:15
}
}